RTシリーズの設定に関するFAQ
telnet操作をコンピュータにやらせて処理(show account)を自動化する方法はありませんか?(telnet用チャットスクリプト)
最終変更日 | 2023/Jan/12 |
文書サイズ | 11KB |
telnet操作をコンピュータにやらせて処理(show account)を自動化する方法はありませんか?(telnet用チャットスクリプト)
telnet通信のためのプログラミング環境があれば、可能です。
例えば...ユーザさんが教えてくれた方法など....
[ rt100i-usersなどで紹介されたスクリプト例 ]
"Net::Telnet"は、CPANのミラーサイトから入手して下さい。
"Net::Telnet"を使ったperlによる遠隔操作スクリプト例 [rt100i-users 8724] |
#!/usr/local/bin/perl use Net::Telnet (); my($lines,$t,$pass,$adminpass,$rthost); $rthost = 'rt100i.boo.foo.woo'; $pass = 'mypass'; $adminpass = 'myadmin'; $t = new Net::Telnet (-host => "$rthost"); ## Wait for first prompt $t->waitfor('/Password:.*$/'); $t->print("$pass"); $t->waitfor('/>.*$/'); $t->print("administrator"); $t->waitfor('/Password:.*$/'); $t->print("$adminpass"); $t->waitfor('/#.*$/'); $t->print("show status bri"); ($lines) = $t->waitfor('/#.*$/'); print $lines; $t->print("show environment"); ($lines) = $t->waitfor('/#.*$/'); print $lines; $t->close; exit; |
expectによる遠隔操作スクリプト例 [rt100i-users 8733] |
#! @ro_path_expect@ -- # Copyright(c) 1997 by Jun-ichiro itojun Itoh <itojun@itojun.org> # Freely redistributable. Absolutely no warranty. # drain configuration from RT100i if {$argc < 3} { exit 1 } set target [lindex $argv 0] set pass1 [lindex $argv 1] set pass2 [lindex $argv 2] spawn -noecho telnet $target expect "assword: " send "$pass1\n" expect "> " send "administrator\n" expect "assword: " send "$pass2\n" expect "# " send "console lines infinity\n" expect "# " send "show config\n" expect "# " send "quit\n" expect { "(Y/N)" { send "n\n"; exp_continue } "> " { send "quit" } } |
TeraTerm Proによる遠隔操作マクロ例 [rt100i-users 8758] |
; connect RT100i connect '192.168.0.1' ; set param A1R = 'Password:' A2R = '>' A3R = '#' A1S = 'rtのpassword' A2S = 'administrator' A3S = 'pp select 1' A4S = 'pp select 2' A5S = 'ip pp route add net default 1' A6S = 'ip pp route delete default' A7S = 'save' A8S = 'exit' ; login wait A1R sendln A1S wait A2R sendln A2S wait A1R sendln A1S wait A3R sendln A3S wait A3R sendln A6S wait A3R sendln A4S wait A3R sendln A6S wait A3R sendln A4S wait A3R sendln A5S wait A3R sendln A7S wait A3R sendln A8S wait A2R sendln A8S |
使い方
このスクリプトを、例えば"rtshow"という名前だとします。
% rtshow rt-router LogPass "console charactaer ascii" "show account"
% rtshow rt-router LogPass -a "AdmPass" "clear account"
sh(シェル)による遠隔操作スクリプト例 |
#! /bin/sh usage() { echo usage $1 RTs-ADDRESS PASSWORD [-a ADM-PASSWORD] \"command\" ... } if [ $# -lt 3 ]; then usage exit 1 fi RT=$1 PASS=$2 shift; shift ADM=no case $1 in -a) ADM=yes ADMPASS=$2 shift; shift;; esac if [ $# -lt 1 ]; then usage exit 1 fi (echo $PASS; sleep 1; if [ x$ADM = xyes ]; then echo administrator; sleep 1 echo $ADMPASS; sleep 1 fi while [ $# -gt 0 ]; do echo $1; shift sleep 1; done if [ x$ADM = xyes ]; then echo quit; sleep 1 echo n; sleep 1 fi echo quit; sleep 1) | telnet $RT exit 0 |
[ FAQ for RT-Series ]
[ FAQ for Config / Intro / Install / Syslog ]